home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / dev / misc / LEDA_src.lha / LEDA-3.1c-source / src / arith / isparc_vecmuladd.s < prev    next >
Encoding:
Text File  |  1994-11-17  |  1.3 KB  |  74 lines

  1.  
  2.     .global    _vecmuladd
  3. _vecmuladd:
  4.     tst    %o3
  5.     ble    Lvma1
  6.     mov    0, %g5        ! carry
  7. Lvma2:
  8.     mov    %o2, %y
  9.     andcc    %g0, %g0, %g3
  10.     ld    [%o1], %g2    ! *a
  11.     ld    [%o0], %g4    ! *paccu
  12.  
  13.     mulscc    %g3, %g2, %g3
  14.     mulscc    %g3, %g2, %g3
  15.     mulscc    %g3, %g2, %g3
  16.     mulscc    %g3, %g2, %g3
  17.  
  18.     mulscc    %g3, %g2, %g3
  19.     mulscc    %g3, %g2, %g3
  20.     mulscc    %g3, %g2, %g3
  21.     mulscc    %g3, %g2, %g3
  22.  
  23.     mulscc    %g3, %g2, %g3
  24.     mulscc    %g3, %g2, %g3
  25.     mulscc    %g3, %g2, %g3
  26.     mulscc    %g3, %g2, %g3
  27.  
  28.     mulscc    %g3, %g2, %g3
  29.     mulscc    %g3, %g2, %g3
  30.     mulscc    %g3, %g2, %g3
  31.     mulscc    %g3, %g2, %g3
  32.  
  33.     mulscc    %g3, %g2, %g3
  34.     mulscc    %g3, %g2, %g3
  35.     mulscc    %g3, %g2, %g3
  36.     mulscc    %g3, %g2, %g3
  37.  
  38.     mulscc    %g3, %g2, %g3
  39.     mulscc    %g3, %g2, %g3
  40.     mulscc    %g3, %g2, %g3
  41.     mulscc    %g3, %g2, %g3
  42.  
  43.     mulscc    %g3, %g2, %g3
  44.     mulscc    %g3, %g2, %g3
  45.     mulscc    %g3, %g2, %g3
  46.     mulscc    %g3, %g2, %g3
  47.  
  48.     mulscc    %g3, %g2, %g3
  49.     mulscc    %g3, %g2, %g3
  50.     mulscc    %g3, %g2, %g3
  51.     mulscc    %g3, %g2, %g3
  52.  
  53.     mulscc    %g3, %g0, %g3        ! 33rd iteration, prod high
  54.  
  55.     tst    %g2            ! sign correction
  56.     bge    Lvma3
  57.     rd    %y, %g2            ! prod low
  58.     add    %g3, %o2, %g3        ! sign correction
  59. Lvma3:
  60.     addcc    %g5, %g4, %g4        ! carry + *paccu
  61.     addx    %g0,%g0,%g5        ! new carry
  62.     addcc    %g2, %g4, %g2        ! result low
  63.     addx    %g3, %g5, %g5        ! result high
  64.     st    %g2, [%o0]        ! *paccu
  65.     inc    4, %o1            ! a++
  66.     subcc    %o3, 1, %o3        ! count--
  67.     bg    Lvma2            ! loop
  68.     inc    4, %o0
  69. Lvma1:
  70.     retl
  71.     mov    %g5, %o0        ! return carry
  72.  
  73.  
  74.